class GeradorGrafo
  attr_reader :resultado

  def initialize(arvore)
    @arvore = arvore
    calcula_resultado
  end

  private
  
  def calcula_resultado
    @resultado = "digraph {\n"
    @resultado += "  node [shape=plaintext]\n"
    faz_no(@arvore)
    faz_filhos(@arvore)
    @resultado += "}"
  end
  
  def faz_filhos(no)
    no.filhos.each do |filho|
      faz_no(filho)
      faz_aresta(no, filho)
      faz_filhos(filho)
    end
  end
  
  def faz_aresta(no, filho)
    @resultado += "  #{no.id} -> #{filho.id}\n"
  end

  def faz_no(no)
    @resultado += "  #{no.formata}\n"
  end
end
